+2005-02-02 Ivan, Wong Yat Cheung <email@ivanwong.info>
+
+ * gdk/win32/gdkselection.c: Use a FIFO list for storing GdkSelProp
+ of a single window so that gtk_clipboard_request_contents() can be
+ called inside a GtkClipboardReceivedFunc(). (#163844)
+
2005-02-01 Matthias Clasen <mclasen@redhat.com>
* gtk/gtkicontheme.c (gtk_icon_theme_init): Look for icons
+2005-02-02 Ivan, Wong Yat Cheung <email@ivanwong.info>
+
+ * gdk/win32/gdkselection.c: Use a FIFO list for storing GdkSelProp
+ of a single window so that gtk_clipboard_request_contents() can be
+ called inside a GtkClipboardReceivedFunc(). (#163844)
+
2005-02-01 Matthias Clasen <mclasen@redhat.com>
* gtk/gtkicontheme.c (gtk_icon_theme_init): Look for icons
+2005-02-02 Ivan, Wong Yat Cheung <email@ivanwong.info>
+
+ * gdk/win32/gdkselection.c: Use a FIFO list for storing GdkSelProp
+ of a single window so that gtk_clipboard_request_contents() can be
+ called inside a GtkClipboardReceivedFunc(). (#163844)
+
2005-02-01 Matthias Clasen <mclasen@redhat.com>
* gtk/gtkicontheme.c (gtk_icon_theme_init): Look for icons
gint length)
{
GdkSelProp *prop;
+ GSList *prop_list;
- prop = g_hash_table_lookup (sel_prop_table, GDK_WINDOW_HWND (owner));
- if (prop != NULL)
- {
- g_free (prop->data);
- g_hash_table_remove (sel_prop_table, GDK_WINDOW_HWND (owner));
- }
prop = g_new (GdkSelProp, 1);
if (type == GDK_TARGET_STRING)
}
prop->format = format;
prop->type = type;
- g_hash_table_insert (sel_prop_table, GDK_WINDOW_HWND (owner), prop);
+ prop_list = g_hash_table_lookup (sel_prop_table, GDK_WINDOW_HWND (owner));
+ prop_list = g_slist_append (prop_list, prop);
+ g_hash_table_insert (sel_prop_table, GDK_WINDOW_HWND (owner), prop_list);
}
void
gint *ret_format)
{
GdkSelProp *prop;
+ GSList *prop_list;
g_return_val_if_fail (requestor != NULL, 0);
g_return_val_if_fail (GDK_IS_WINDOW (requestor), 0);
GDK_NOTE (DND, g_print ("gdk_selection_property_get: %p\n",
GDK_WINDOW_HWND (requestor)));
- prop = g_hash_table_lookup (sel_prop_table, GDK_WINDOW_HWND (requestor));
+ prop_list = g_hash_table_lookup (sel_prop_table, GDK_WINDOW_HWND (requestor));
+ prop = prop_list ? (GdkSelProp *) prop_list->data : NULL;
if (prop == NULL)
{
_gdk_selection_property_delete (GdkWindow *window)
{
GdkSelProp *prop;
+ GSList *prop_list;
GDK_NOTE (DND, g_print ("_gdk_selection_property_delete: %p\n",
GDK_WINDOW_HWND (window)));
- prop = g_hash_table_lookup (sel_prop_table, GDK_WINDOW_HWND (window));
- if (prop != NULL)
+ prop_list = g_hash_table_lookup (sel_prop_table, GDK_WINDOW_HWND (window));
+ if (prop_list && (prop = (GdkSelProp *) prop_list->data) != NULL)
{
g_free (prop->data);
- g_hash_table_remove (sel_prop_table, GDK_WINDOW_HWND (window));
+ prop_list = g_slist_remove (prop_list, prop);
+ g_free (prop);
+ g_hash_table_insert (sel_prop_table, GDK_WINDOW_HWND (window), prop_list);
}
}